home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2000 February
/
PCWorld_2000-02_cd.bin
/
Software
/
Servis
/
FFE
/
MOD.SWG
/
0058_PLM - Disorder Tracker 2.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1997-05-11
|
5KB
|
153 lines
;----------------------------------------------------------------------------
; DisorderTracker2 file FORMAT STARTS HERE
;----------------------------------------------------------------------------
well here it comes... I am converting this from the source
code now, as I type, so I hope it is right!
this is (c) statix 1995... and I accept no responsibility for errors
in here,
if there is a problem contact me --> statix@sv.span.com...
here is a list of fields in a .PLM file, I assume you know some
coding??
name length (bytes) description
=======================================================================
ID 4 marker, always "PLM" then character 26
headersize 1 number of bytes in header, including ID etc
version 1 version code of file format, 10h, I think
songname 48 ASCIIZ string
channels 1 number of channels
flags 1 flags byte, ignore this!
maxvol 1 maximum volume for vol slides, normally 40h
amplify 1 soundblaster amplify, 40h=no amplify
initbpm 1 starting bpm of song, normally 125
initspeed 1 starting speed of song, normally 6
initpan 32 starting pan positions, always 32, 0=left,
15=right
numsamps 1 number of samples in file
numpats 1 number of patterns in file
numorders 2 number of orders in file
padding 1 ignore...
; now seek "headersize" bytes from the beginning of the file,
(normally no
; change) now:
orderlist 4*numorders a list of orders, format coming
later...
patternlist 4*numpats a list of file offsets of the patterns
(dwords)
samplelist 4*numsamps a list of file offsets of the samples
(dwords)
; now read in the patterns, which are uncompressed.
; for each pattern, seek to the place in the file in the patternlist,
and the
; format is below. (NOTE: if the patternlist has a position of 0, skip
to next
; pattern)
patternsize 4 (dword) number of bytes this pattern takes in
file
len byte # rows
wid byte # channels
col byte colour
name 25 bytes name,asciiz string
;now the notes in the pattern, stored a row at a time, with "wid"
channels
;in each row. the note format is:
pitch byte hi nybble is octave, lo nybble is note (C=0,
C#=1, D=2 etc). 0=blank
sample byte sample number. 0=blank
vol byte volume. 0ffh=blank. NOTE! big volumes >64
are allowed!
cmd byte command number
nfo byte command info
; now read in the samples, which are uncompressed.
; for each sample, seek to the place in the file in the samplelist,
and the
; format is below. (NOTE: if the samplelist has a position of 0, skip
to next
; sample)
;in fact each sample is stored in the .PLM file as a complete .PLS
sample file.
;The .PLS format is as follows:
id 4 bytes always "PLS" then character 26
headersize 1 byte size of header in bytes, including ID etc
version 1 byte
fullname 32 byte ; NOT asciiz
filename 12 byte ; ditto
pan byte ; default pan, 0..f, >f=none
vol byte ; default vol 0..40h
flags byte ; 1 = 16 bit , 0=8 bit
c4spd word ; c4spd (as for S3M)
gusloc dword ; posn in gusram (not used in file)
loopst dword ; loopstart
loopen dword ; loopend
len dword ; data size IN BYTES
data lots of bytes ; unsigned data
; default pan changes the pan on that channel when the sample is
CHANGED
; to that sample, experiment in dt2 to see what I mean...
; note that default volume does NOT work like MOD or S3M default
volume.
; default volume actually multiplies the volume field for that sample,
so
; a default volume of 40h plays the sample as written in the file. a
; default volume of 20h always plays the sample half as loud as
written in
; the file . This is a better system, I think... (more logical?!?)
; finally I will explain the format of the orderlist. Each one is 4
bytes,
; and is:
x word ; starting position of pattern
y byte ; channel number of first channel of pattern
pattern byte ; number of pattern
; I think that will make sense, If you see how dt2 works... note that
is
; is very important to remember that patterns can overlap. In this
case,
; the pattern with the higher x takes priority. If they have the same
x,
; then it is the one with the higher pattern number. You can see this
in
; dt2 by dragging patterns around on the over view screen.
; of course, this system with x and y for each pattern is what makes
dt2
; unique, and also so hard to play with a standard player!!!
hope that helps, and I have not made any errors... any questions, just
email.
;---------------------------------------------------------------------------
; END OF DT2 FORMAT
;---------------------------------------------------------------------------
ps If you want to spread that format, go ahead but please only spread
with
*ALL* of it, starting from the line that says "format starts here..."
thankyou...
---------------------------------------------------------------------------
With formats like PLM, with the identifier at the start of the file,
it's very easy to rip them, just extract everthing after the marker..